🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / app / src / fdroid / kotlin / org / meshtastic / app / map / MapViewWithLifecycle.kt
Displaying Raw • Download
app/src/fdroid/kotlin/org/meshtastic/app/map/MapViewWithLifecycle.kt 520fa717a938fd84682403b41f57d9f7e1ef49ef (520fa717) Text, 4.97 KB
T8b949e/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.app.map
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.runtime.DisposableEffect
Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.compose.runtime.mutableDoubleStateOf
Tff7b72import T7ee787androidx.compose.runtime.mutableStateOf
Tff7b72import T7ee787androidx.compose.runtime.remember
Tff7b72import T7ee787androidx.compose.runtime.saveable.Saver
Tff7b72import T7ee787androidx.compose.runtime.saveable.rememberSaveable
Tff7b72import T7ee787androidx.compose.runtime.setValue
Tff7b72import T7ee787androidx.compose.ui.platform.LocalContext
Tff7b72import T7ee787androidx.lifecycle.Lifecycle
Tff7b72import T7ee787androidx.lifecycle.LifecycleEventObserver
Tff7b72import T7ee787androidx.lifecycle.compose.LocalLifecycleOwner
Tff7b72import T7ee787org.osmdroid.config.Configuration
Tff7b72import T7ee787org.osmdroid.tileprovider.tilesource.ITileSource
Tff7b72import T7ee787org.osmdroid.tileprovider.tilesource.TileSourceFactory
Tff7b72import T7ee787org.osmdroid.util.BoundingBox
Tff7b72import T7ee787org.osmdroid.util.GeoPoint
Tff7b72import T7ee787org.osmdroid.views.CustomZoomButtonsController
Tff7b72import T7ee787org.osmdroid.views.MapView
Tff7b72private Tff7b72const Tff7b72val Te6edf3MIN_ZOOM_LEVEL Tff7b72= T79c0ff1.5
Tff7b72private Tff7b72const Tff7b72val Te6edf3MAX_ZOOM_LEVEL Tff7b72= T79c0ff2T79c0ff0.0
Tff7b72private Tff7b72const Tff7b72val Te6edf3DEFAULT_ZOOM_LEVEL Tff7b72= T79c0ff1T79c0ff5.0
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffMagicNumberTa5d6ff"Tb4b4b4)
Tf0883e@Composable
Tff7b72fun Td2a8ffrememberMapViewWithLifecycleTb4b4b4(
Te6edf3applicationIdTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3boxTb4b4b4: Te6edf3BoundingBoxTb4b4b4,
Te6edf3tileSourceTb4b4b4: Te6edf3ITileSource Tff7b72= Te6edf3TileSourceFactoryTb4b4b4.Te6edf3DEFAULT_TILE_SOURCETb4b4b4,
Tb4b4b4)Tb4b4b4: Te6edf3MapView Tb4b4b4{
Tff7b72val Te6edf3zoom Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3boxTb4b4b4.Te6edf3requiredZoomLevelTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3isFiniteTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tb4b4b4(Te6edf3boxTb4b4b4.Te6edf3requiredZoomLevelTb4b4b4(Tb4b4b4) Tff7b72- T79c0ff0.5Tb4b4b4)Tb4b4b4.Te6edf3coerceAtLeastTb4b4b4(Te6edf3MIN_ZOOM_LEVELTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3DEFAULT_ZOOM_LEVEL
Tb4b4b4}
Tff7b72val Te6edf3center Tff7b72= Te6edf3GeoPointTb4b4b4(Te6edf3boxTb4b4b4.Te6edf3centerLatitudeTb4b4b4, Te6edf3boxTb4b4b4.Te6edf3centerLongitudeTb4b4b4)
Tff7b72return Te6edf3rememberMapViewWithLifecycleTb4b4b4(
Te6edf3applicationId Tff7b72= Te6edf3applicationIdTb4b4b4,
Te6edf3zoomLevel Tff7b72= Te6edf3zoomTb4b4b4,
Te6edf3mapCenter Tff7b72= Te6edf3centerTb4b4b4,
Te6edf3tileSource Tff7b72= Te6edf3tileSourceTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffLongMethodTa5d6ff"Tb4b4b4)
Tf0883e@Composable
Tff7b72internal Tff7b72fun Td2a8ffrememberMapViewWithLifecycleTb4b4b4(
Te6edf3applicationIdTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3zoomLevelTb4b4b4: Tffa657Double Tff7b72= Te6edf3MIN_ZOOM_LEVELTb4b4b4,
Te6edf3mapCenterTb4b4b4: Te6edf3GeoPoint Tff7b72= Te6edf3GeoPointTb4b4b4(T79c0ff0.0Tb4b4b4, T79c0ff0.0Tb4b4b4)Tb4b4b4,
Te6edf3tileSourceTb4b4b4: Te6edf3ITileSource Tff7b72= Te6edf3TileSourceFactoryTb4b4b4.Te6edf3DEFAULT_TILE_SOURCETb4b4b4,
Tb4b4b4)Tb4b4b4: Te6edf3MapView Tb4b4b4{
Tff7b72var Te6edf3savedZoom Tff7b72by Te6edf3rememberSaveable Tb4b4b4{ Te6edf3mutableDoubleStateOfTb4b4b4(Te6edf3zoomLevelTb4b4b4) Tb4b4b4}
Tff7b72var Te6edf3savedCenter Tff7b72by
Te6edf3rememberSaveableTb4b4b4(
Te6edf3stateSaver Tff7b72=
Te6edf3SaverTb4b4b4(
Te6edf3save Tff7b72= Tb4b4b4{ Te6edf3mapOfTb4b4b4(Ta5d6ff"Ta5d6fflatitudeTa5d6ff" Te6edf3to Tffa657itTb4b4b4.Te6edf3latitudeTb4b4b4, Ta5d6ff"Ta5d6fflongitudeTa5d6ff" Te6edf3to Tffa657itTb4b4b4.Te6edf3longitudeTb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3restore Tff7b72= Tb4b4b4{ Te6edf3GeoPointTb4b4b4(Tffa657itTff7b72[Ta5d6ff"Ta5d6fflatitudeTa5d6ff"Tff7b72] Tff7b72?: T79c0ff0.0Tb4b4b4, Tffa657itTff7b72[Ta5d6ff"Ta5d6fflongitudeTa5d6ff"Tff7b72] Tff7b72?: Tb4b4b4.T79c0ff0Tb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3mutableStateOfTb4b4b4(Te6edf3mapCenterTb4b4b4)
Tb4b4b4}
Tff7b72val Te6edf3context Tff7b72= Te6edf3LocalContextTb4b4b4.Te6edf3current
Tff7b72val Te6edf3mapView Tff7b72= Te6edf3remember Tb4b4b4{
Te6edf3MapViewTb4b4b4(Te6edf3contextTb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3clipToOutline Tff7b72= Tff7b72true
T8b949e// Required to get online tiles
Te6edf3ConfigurationTb4b4b4.Te6edf3getInstanceTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3userAgentValue Tff7b72= Te6edf3applicationId
Te6edf3setTileSourceTb4b4b4(Te6edf3tileSourceTb4b4b4)
Te6edf3isVerticalMapRepetitionEnabled Tff7b72= Tff7b72false T8b949e// disables map repetition
Te6edf3setMultiTouchControlsTb4b4b4(Tff7b72trueTb4b4b4)
Tff7b72val Te6edf3bounds Tff7b72= Te6edf3overlayManagerTb4b4b4.Te6edf3tilesOverlayTb4b4b4.Te6edf3bounds T8b949e// bounds scrollable map
Te6edf3setScrollableAreaLimitLatitudeTb4b4b4(Te6edf3boundsTb4b4b4.Te6edf3actualNorthTb4b4b4, Te6edf3boundsTb4b4b4.Te6edf3actualSouthTb4b4b4, T79c0ff0Tb4b4b4)
T8b949e// scales the map tiles to the display density of the screen
Te6edf3isTilesScaledToDpi Tff7b72= Tff7b72true
T8b949e// sets the minimum zoom level (the furthest out you can zoom)
Te6edf3minZoomLevel Tff7b72= Te6edf3MIN_ZOOM_LEVEL
Te6edf3maxZoomLevel Tff7b72= Te6edf3MAX_ZOOM_LEVEL
T8b949e// Disables default +/- button for zooming
Te6edf3zoomControllerTb4b4b4.Te6edf3setVisibilityTb4b4b4(Te6edf3CustomZoomButtonsControllerTb4b4b4.Te6edf3VisibilityTb4b4b4.Te6edf3SHOW_AND_FADEOUTTb4b4b4)
Te6edf3controllerTb4b4b4.Te6edf3setZoomTb4b4b4(Te6edf3savedZoomTb4b4b4)
Te6edf3controllerTb4b4b4.Te6edf3setCenterTb4b4b4(Te6edf3savedCenterTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72val Te6edf3lifecycle Tff7b72= Te6edf3LocalLifecycleOwnerTb4b4b4.Te6edf3currentTb4b4b4.Te6edf3lifecycle
Te6edf3DisposableEffectTb4b4b4(Te6edf3lifecycleTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3observer Tff7b72= Te6edf3LifecycleEventObserver Tb4b4b4{ Te6edf3_Tb4b4b4, Te6edf3event Tff7b72-Tff7b72>
Tff7b72when Tb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Te6edf3LifecycleTb4b4b4.Te6edf3EventTb4b4b4.Te6edf3ON_PAUSE Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3mapViewTb4b4b4.Te6edf3onPauseTb4b4b4(Tb4b4b4)
Tb4b4b4}
Te6edf3LifecycleTb4b4b4.Te6edf3EventTb4b4b4.Te6edf3ON_RESUME Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3mapViewTb4b4b4.Te6edf3onResumeTb4b4b4(Tb4b4b4)
Tb4b4b4}
Te6edf3LifecycleTb4b4b4.Te6edf3EventTb4b4b4.Te6edf3ON_STOP Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3savedCenter Tff7b72= Te6edf3mapViewTb4b4b4.Te6edf3projectionTb4b4b4.Te6edf3currentCenter
Te6edf3savedZoom Tff7b72= Te6edf3mapViewTb4b4b4.Te6edf3zoomLevelDouble
Tb4b4b4}
Tff7b72else Tff7b72-Tff7b72> Tb4b4b4{Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Te6edf3lifecycleTb4b4b4.Te6edf3addObserverTb4b4b4(Te6edf3observerTb4b4b4)
Te6edf3onDispose Tb4b4b4{ Te6edf3lifecycleTb4b4b4.Te6edf3removeObserverTb4b4b4(Te6edf3observerTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3mapView
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.05s